home *** CD-ROM | disk | FTP | other *** search
- # include "ctlmod.h"
- # include <ingres.h>
- # include <tree.h>
- # include <aux.h>
- # include <sccs.h>
-
- SCCSID(@(#)setp.c 8.1 12/31/84)
-
- /*
- ** SETP -- set parameter
- **
- ** Sets a parameter, to be later sent by 'call' to whomever.
- **
- ** Parameters:
- ** type -- parameter type.
- ** PV_STRING -- a string, 'len' is ignored.
- ** PV_TUPLE -- a tuple of length 'len'.
- ** PV_QTREE -- a query tree pointer, 'len'
- ** is ignored.
- ** PV_INT -- an integer, 'len' is ignored.
- ** val -- the value (real value if PV_INT, pointer
- ** otherwise).
- ** len -- the length of the tuple in PV_TUPLE mode.
- **
- ** Returns:
- ** none
- **
- ** Side Effects:
- ** Adjusts Ctx.ctx_pc & Ctx.ctx_pv.
- **
- ** Trace Flags:
- ** 4.8 - 4.15
- */
-
- setp(type, val, len)
- register int type;
- char *val;
- register int len;
- {
- register PARM *pp;
- register char *newp;
- extern char *need();
-
- /*
- ** Check the magic bounds.
- */
-
- if (!Ctx.ctx_init)
- /*
- pp = &Resp.resp_rval;
- */ syserr("setp: no initp");
- else if (Ctx.ctx_pc >= PV_MAXPC)
- syserr("setp: overflow");
- else
- pp = &Ctx.ctx_pv[Ctx.ctx_pc++];
-
- /*
- ** Figure out the length from the type.
- */
-
- switch (type)
- {
- case PV_STR:
- len = length(val) + 1;
- newp = need(Qbuf, len);
- bmove(val, newp, len);
- pp->pv_val.pv_str = newp;
- break;
-
- case PV_TUPLE:
- pp->pv_val.pv_tuple = (char *) val;
- break;
-
- case PV_QTREE:
- len = sizeof pp->pv_val.pv_qtree;
- pp->pv_val.pv_qtree = (QTREE *) val;
- break;
-
- case PV_INT:
- len = sizeof (short);
- pp->pv_val.pv_int = (short) val;
- break;
-
-
- default:
- syserr("setp: type %d", type);
- }
-
- /*
- ** Set up the parameter.
- */
-
- pp->pv_type = type;
- pp->pv_len = len;
-
- # ifdef xCTR1
- if (tTf(4, 8))
- {
- lprintf("setp: ");
- pr_parm(pp);
- }
- # endif
- }
-